package stack;

/**
 * @author: cxyxj
 */
public class ArrayStack {

    /**
     * 数据
     */
    String[] data;

    /**
     * 元素个数
     */
    int size;

    /**
     * 初始化数组容量
     */
    public ArrayStack(int cap) {
        data = new String[cap];
    }

    /**
     * 入栈
     */
    public void push(String e) {
        //数组扩容
        data[size++] = e;
    }

    /**
     * 出栈
     */
    public String pop() {
        if (isEmpty()){
            return null;
        }
        String datum = data[--size];
        //方便 GC
        data[size] = null;
        return datum;
    }

    /**
     * 判断栈中是否还有元素
     */
    public boolean isEmpty() {
        return size() == 0;
    }
    /**
     * 返回栈中元素个数
     */
    public synchronized int size() {
        return size;
    }

    public void print() {
        System.out.println("size:" + size);
        for(int i = 0; i < size; i++) {
            System.out.print(data[i] + " ");
        }
        System.out.println();
    }

    public static void main(String[] args) {
        ArrayStack mystack = new ArrayStack(2);
        mystack.push("1110");
        mystack.push("2222");
        mystack.print();
        System.out.println(mystack.pop());
        System.out.println(mystack.pop());
        mystack.print();
        System.out.println(mystack.pop());
    }
}